package com.demo.java.OD1_50.OD5;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 字符串分割问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145502116
 */
public class OdMain {

    /**
     * 根据给定的规则，改变字符串中的每个分段
     *
     * @param str 输入的字符串
     * @param k   每个分段的长度
     * @return 处理后的字符串
     */
    public static String changeStr(String str, int k) {
        // 分割字符串
        String[] arr = str.split("-");

        // 使用 StringBuilder 来拼接字符串（比 StringBuffer 性能更好）
        StringBuilder newStrSb = new StringBuilder();
        newStrSb.append(arr[0]);

        // 合并后面的部分为一个新的字符串
        StringBuilder sb = new StringBuilder();
        for (int i = 1; i < arr.length; i++) {
            sb.append(arr[i]);
        }

        // 双指针法：每次取 k 长度的子串并处理
        int left = 0;
        int right = left + k;
        while (right <= sb.length()) {
            // 处理子串
            String substring = sb.substring(left, right);
            String modifiedStr = countUpCase(substring, k);
            newStrSb.append("-").append(modifiedStr);
            left += k;
            right = left + k;
        }

        // 如果剩余部分不足 k 长度，直接追加
        if (left < sb.length()) {
            newStrSb.append("-").append(sb.substring(left));
        }

        return newStrSb.toString();
    }

    /**
     * 根据字母大小写的情况决定是否转换为大写或小写
     *
     * @param str 输入的字符串
     * @param k   每段的长度
     * @return 转换后的字符串
     */
    public static String countUpCase(String str, int k) {
        int letter = 0;
        int capital = 0;

        // 统计字母的大小写数量
        for (int i = 0; i < str.length(); ++i) {
            if (Character.isLowerCase(str.charAt(i))) {
                ++letter;
            } else if (Character.isUpperCase(str.charAt(i))) {
                ++capital;
            }
        }

        // 判断大小写的数量来决定转换为大写还是小写
        if (letter == capital) {
            return str; // 如果字母大小写相等，不做修改
        } else if (letter > k / 2) {
            return str.toLowerCase(); // 如果小写字母更多，转换为小写
        } else {
            return str.toUpperCase(); // 否则转换为大写
        }
    }

    public static void main(String[] args) {
        // 使用 try-with-resources 确保 Scanner 正确关闭
        try (Scanner s = new Scanner(System.in)) {
            // 读取输入的字符串和整数
            String line = s.nextLine();
            int num = s.nextInt();

            // 输出处理后的字符串
            System.out.println(changeStr(line, num));
        } catch (Exception e) {
            System.out.println("发生错误: " + e.getMessage());
        }
    }
}

